package jp.co.neosystem.s2wg.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.seasar.framework.util.StringUtil;

/**
 * 暗号化ユーティリティ。
 */
public class Encryption {

	/**
	 * 暗号化を行います。
	 * 
	 * @param type
	 *            暗号化アルゴリズム
	 * @param str
	 *            暗号化元文字列
	 * @return 暗号化済文字列
	 */
	public static String encrypt(final EncryptAlgorithm type, final String str) {
		if (StringUtil.isBlank(str)) {
			return str;
		}

		MessageDigest md = null;

		try {
			md = MessageDigest.getInstance(type.toString());
		} catch (final NoSuchAlgorithmException e) {
			return str;
		}

		md.reset();
		md.update(str.getBytes());
		final byte[] hash = md.digest();
		final StringBuilder sb = new StringBuilder();

		for (final byte b : hash) {
			sb.append(Integer.toHexString((b >> 4) & 0x0F));
			sb.append(Integer.toHexString(b & 0x0F));
		}

		return sb.toString();
	}
}
